home *** CD-ROM | disk | FTP | other *** search
- PAGE 55,132
- TITLE QuadScreen APPLY program - Copyright 1983 Mathews Associates
-
- BSIZE EQU 27408 ; SIZE OF QSI.BIN FILE AS SHOWN
- ; ; IN DISK DIRECTORY
- ;
- ; OFFSETS INTO QSI.BIN IMAGE
- OXFONT EQU 0764H-0100H ; XFONT IN QSIMBED MODULE
- OYFONT EQU OXFONT+10H ; YFONT IN QSIMBED MODULE
- OULINE EQU OYFONT+10H ; ULINE IN QSIMBED MODULE
- OCHSETS EQU OULINE+10H ; CHSETS IN QSIMBED MODULE
- OBSIZE EQU OCHSETS+20H ; BSIZE IN QSIMBED MODULE
- OPLAST EQU 016AH-0100H ; PLAST IN INSTALL MODULE
-
- ; General DOS invocation macro
-
- DOS MACRO FNC,VAL,VBX,VCX,VDX,VSI,VDI
- IFNB <VDI>
- MOV DI,VDI
- ENDIF
- IFNB <VSI>
- MOV SI,VSI
- ENDIF
- IFNB <VDX>
- MOV DX,VDX
- ENDIF
- IFNB <VCX>
- MOV CX,VCX
- ENDIF
- IFNB <VBX>
- MOV BX,VBX
- ENDIF
- IFNB <VAL>
- MOV AL,VAL
- ENDIF
- IFNB <FNC>
- MOV AH,FNC
- ENDIF
- INT 33
- ENDM
-
- ; Print string macro
-
- PRINT MACRO STR
- DOS 9,,,,<OFFSET STR>
- ENDM
-
- ; Abort execution macro
-
- HALT MACRO
- PRINT FMSG
- DOS 76,1
- ENDM
-
- DUMMY SEGMENT
-
- IMAGE DB 65280 DUP (?)
-
- DUMMY ENDS
-
- STACK SEGMENT STACK
-
- DW 4096 DUP (?)
-
- STACK ENDS
-
- PSP SEGMENT AT 0
-
- ORG 080H
- INLEN DB ?
- INPUT LABEL BYTE
-
- PSP ENDS
-
- APPLY SEGMENT
-
- ASSUME CS:APPLY,DS:PSP,ES:PSP
-
- MAIN PROC NEAR
- CALL IDENT
- CALL LOAD
- CALL BUILD
- CALL SAVE
- DOS 76,0
-
- MAIN ENDP
-
- IMSG DB 'Font installation program -'
- DB ' Copyright 1983 Mathews Associates',13,10,'$'
-
- HMSG DB 13,10,'APPLY should be used with a list'
- DB ' of font files to be installed into a',13,10
- DB 'QuadScreen driver given in order'
- DB ' corresponding to mode number. I. e.',13,10
- DB 'A>APPLY 12X20.STD+6X8.STD+7X9.STD'
- DB '+USER1.FON+USER2.FON ...',13,10
- DB 'with a limit of sixteen fonts and'
- DB ' 64K total driver size. Font files may',13,10
- DB 'be created and edited by FONTEDIT.',13,10,'$'
-
- EMSG1 DB 'Cannot find file QSI.BIN$'
- EMSG2 DB 'Error opening file QSI.BIN$'
- EMSG3 DB 'File QSI.BIN is invalid$'
- EMSG4 DB 'Cannot find file $'
- EMSG5 DB 'Error opening file $'
- EMSG6 DB 'Invalid font file $'
- EMSG7 DB 'Address space overflow$'
- EMSG8 DB 'Cannot create file QSI.COM$'
-
- FMSG DB ' - APPLY aborted.',13,10,'$'
-
- INNAME DB 'QSI.BIN',0
- OUTNAME DB 'QSI.COM',0
-
- NEWNAME DB 64 DUP (?)
-
- SEGPSP DW ?
-
- XFONT DB ?
- YFONT DB ?
-
- INDEX DB ?
- NEXTSI DW ?
- NEXTCX DW ?
-
- TSIZE DW ?
- CSIZE DW ?
-
- IDENT PROC NEAR
- MOV AX,CS
- MOV DS,AX
- MOV AX,ES
- MOV SEGPSP,AX
-
- ASSUME DS:APPLY,ES:NOTHING
-
- PRINT IMSG
- RET
-
- IDENT ENDP
-
- ; Load the file QSI.BIN into memory
-
- LOAD PROC NEAR
- DOS 61,0,,,<OFFSET INNAME>
- JNC LOAD2
- CMP AX,2
- JNZ LOAD1
- PRINT EMSG1
- HALT
- LOAD1:
- PRINT EMSG2
- HALT
- LOAD2:
- PUSH DS
- MOV DX,SEG DUMMY
- MOV DS,DX
- XOR DX,DX
- DOS 63,,AX,BSIZE+1
- POP DS
- JC LOAD1
- CMP AX,BSIZE
- JZ LOAD3
- PRINT EMSG3
- HALT
- LOAD3:
- DOS 62
- JC LOAD1
- MOV AX,BSIZE
- MOV CSIZE,AX
- RET
-
- LOAD ENDP
-
- ; Attach the fonts given to memory image
-
- BUILD PROC NEAR
- MOV AX,SEGPSP
- MOV DS,AX
- MOV AX,CS
- MOV ES,AX
-
- ASSUME DS:PSP,ES:APPLY
-
- MOV CL,INLEN
- OR CL,CL
- JZ BULD2
- XOR CH,CH
- MOV SI,OFFSET INPUT
- BULD1:
- CLD
- CMP BYTE PTR [SI],' '
- JNZ BULD3
- INC SI
- LOOP BULD1
- BULD2:
- MOV AX,CS
- MOV DS,AX
-
- ASSUME DS:APPLY
-
- PRINT HMSG
- DOS 76,1
-
- ASSUME DS:PSP
-
- BULD3:
- MOV DI,OFFSET NEWNAME
- BULD4:
- CLD
- LODSB
- DEC CX
- CMP AL,'+'
- JZ BULD5
- STOSB
- JCXZ BULD5
- JMP BULD4
- BULD5:
- MOV BYTE PTR ES:[DI],0
- MOV AX,SEGPSP
- MOV ES,AX
- MOV AX,CS
- MOV DS,AX
-
- ASSUME DS:APPLY,ES:PSP
-
- MOV NEXTSI,SI
- MOV NEXTCX,CX
- DOS 61,0,,,<OFFSET NEWNAME>
- JNC BULD7
- CMP AX,2
- JNZ BULD6
- PRINT EMSG4
- CALL PRNAME
- HALT
- BULD6:
- PRINT EMSG5
- CALL PRNAME
- HALT
- BULD7:
- DOS 63,,AX,1,<OFFSET XFONT>
- JNC BULD9
- CMP AX,1
- JZ BULD9
- BULD8:
- PRINT EMSG6
- CALL PRNAME
- HALT
- BULD9:
- CMP XFONT,32
- JA BULD8
- DOS 63,,,1,<OFFSET YFONT>
- JC BULD8
- CMP AX,1
- JNZ BULD8
- CMP YFONT,32
- JZ BULD8
- MOV AL,XFONT
- ADD AL,7
- MOV CL,3
- SHR AL,CL
- MUL YFONT
- MOV AH,AL
- XOR AL,AL
- MOV TSIZE,AX
- PUSH DS
- MOV DX,CSIZE
- MOV CX,SEG DUMMY
- MOV DS,CX
- DOS 63,,,AX
- POP DS
- JC BULD8
- CMP AX,TSIZE
- JNZ BULD8
- MOV AX,SEG DUMMY
- MOV ES,AX
-
- ASSUME ES:DUMMY
-
- MOV BL,INDEX
- XOR BH,BH
- MOV AL,XFONT
- MOV IMAGE[BX+OXFONT],AL
- MOV AL,YFONT
- MOV IMAGE[BX+OYFONT],AL
- MOV CL,16
- MUL CL
- ADD AX,12
- MOV CL,20
- DIV CL
- MOV IMAGE[BX+OULINE],AL
- SHL BX,1
- MOV AX,CSIZE
- ADD AX,0100H
- MOV WORD PTR IMAGE[BX+OCHSETS],AX
- MOV AX,TSIZE
- MOV WORD PTR IMAGE[BX+OBSIZE],AX
- ADD CSIZE,AX
- JNC BULD10
- PRINT EMSG7
- HALT
- BULD10:
- MOV CX,NEXTCX
- JCXZ BULD11
- INC INDEX
- MOV SI,NEXTSI
- MOV AX,SEGPSP
- MOV DS,AX
- MOV AX,CS
- MOV ES,AX
- JMP BULD3
- BULD11:
- MOV AX,CSIZE
- MOV WORD PTR IMAGE+OPLAST,AX
- RET
-
- ASSUME ES:NOTHING
-
- BUILD ENDP
-
- ; Save the file QSI.COM from memory
-
- SAVE PROC NEAR
- DOS 60,,,0,<OFFSET OUTNAME>
- JNC SAVE2
- SAVE1:
- PRINT EMSG8
- HALT
- SAVE2:
- PUSH DS
- MOV CX,CSIZE
- MOV DX,SEG DUMMY
- MOV DS,DX
- XOR DX,DX
- DOS 64,,AX
- POP DS
- JC SAVE1
- DOS 62
- JC SAVE1
- RET
-
- SAVE ENDP
-
- PRNAME PROC NEAR
- MOV SI,OFFSET NEWNAME
- PRNM1:
- CLD
- LODSB
- OR AL,AL
- JZ PRNM2
- MOV DL,AL
- PUSH SI
- DOS 2
- POP SI
- JMP PRNM1
- PRNM2:
- RET
-
- PRNAME ENDP
-
- APPLY ENDS
-
- END MAIN